
new function() {
  
  var keywords = 
    "and or xor __FILE__ __LINE__ array as break case cfunction class const continue declare default die "+
    "do echo else elseif enddeclare endfor endforeach endif endswitch endwhile extends for foreach function "+
    "include include_once global if new old_function return static switch use require require_once var while "+
    "__FUNCTION__ __CLASS__ true false bool boolean null unset isset int integer float double real empty instanceof "+
    "__METHOD__ __construct __destruct __set __get __isset __sleep __wakeup abstract interface public implements "+
    "extends private protected try catch throw self string float object";
  
  this.patterns = [
    { regex: Quode.JSH.util.regex.multiLComment, css: "comment" },
    { regex: Quode.JSH.util.regex.singleLComment, css: "comment" },
    { regex: Quode.JSH.util.regex.perlComment, css: "comment" },
    { regex: Quode.JSH.util.regex.singleQStringLB, css: "single-string" },
    { regex: Quode.JSH.util.regex.doubleQStringLB, css: "double-string" },
    { regex: Quode.JSH.util.regex.number, css: "number" },
    { regex: new RegExp("\\$\\w+"), css: "variable" },
    { regex: new RegExp("<\\?(?:php|=)(?=\\s)"),css: "tag" },
    { regex: new RegExp("\\?>"), css: "tag" },
    { regex: new RegExp("[\\][{}()\\\\=,?;.:!&|^/+*%-]+"), css: "operator" },
    { regex: new RegExp("[<>]"), css: "operator" },
    { regex: Quode.JSH.util.regex.keywords(keywords), css: "keyword" }
  ];
  
  Quode.JSH.language.register(this, "php");
};

